Билет 3
Управляемые формы
В справочнике «Контрагенты» необходимо создать управляемую основную форму элемента, в которой пользователь сможет увидеть все движения с участием этого контрагента по регистру бухгалтерии. Доступ к этой информации должен осуществляться из панели навигации.
В форме документа «Приходная накладная» необходимо предоставить пользователю возможность вводить произвольный текстовый комментарий. Текст комментария может содержать навигационную ссылку (не более одной) на документ оплаты. Переход по навигационной ссылке должен осуществляться при нажатии кнопки открытия, созданной у данного элемента управления формы. 
При проведении документа «Расходная накладная» в случае нехватки товара должно появляться сообщение с указанием реального количества. Данное сообщение должно быть привязано к полю «Количество» соответствующей строки табличной части документа. В случае наличия дублей строк сообщение должно быть связано с первой строкой, содержащей проблемную номенклатуру.

1)	Перенести в Справочник «Контрагенты» Форму и Команду
Тип параметра команды: «СправочникСсылка.Контрагенты»

2)	Приходная накладная – скопировать форму документа
&НаКлиенте
Процедура ПояснениеОткрытие(Элемент, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
	Слова = СтрРазделить(Объект.Пояснение, " ");
	Для Каждого Слово Из Слова Цикл
		Если СтрНачинаетсяС(Слово, "e1cib/data/Документ.ПриходДенег?ref=") Тогда
			Попытка
				ПерейтиПоНавигационнойСсылке(Слово);
			Исключение
				Сообщение = Новый СообщениеПользователю;
				Сообщение.Текст = КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
				Сообщение.Сообщить();				
			КонецПопытки;
			Возврат;
		КонецЕсли;
	КонецЦикла;
КонецПроцедуры

3)	Модуль объекта Расх накл. ОбработкаПроведенияОУ
Если ВыборкаНоменклатура.КоличествоВДокументе > ВыборкаНоменклатура.КоличествоОстаток Тогда
	Сообщение = Новый СообщениеПользователю;
	Сообщение.Текст = СтрШаблон("Превышение остатка по номенклатуре %1. Имеющийся остаток: %2",
		ВыборкаНоменклатура.НоменклатураПредставление, ВыборкаНоменклатура.КоличествоОстаток);	
	// Привязка выводимого сообщения к полю формы (требование задачи по управляемым формам)	
	Сообщение.Поле = "Объект.СписокНоменклатуры["+(ВыборкаНоменклатура.НомерСтроки-1)+"].Количество";
	Сообщение.Сообщить();	
	Отказ = Истина; 
КонецЕсли;

Подсистема